import 'package:flutter/material.dart';

/// # NodeContextMenu
///
/// 静态菜单构建器，生成一组 [PopupMenuItem]。
///
/// - 不允许实例化（私有构造函数）
/// - 提供 `build` 方法根据 `isFolder` 决定菜单项
class NodeContextMenu {
  /// 私有构造函数：禁止外部实例化
  const NodeContextMenu._();

  /// 构建右键菜单项（文件/文件夹通用）。
  ///
  /// - [isFolder]：是否是文件夹，若为 `true` 则多两个选项
  /// - [itemHeight]：每项高度（默认 36）
  /// - [itemPadding]：每项内边距（默认水平 16）
  /// - [textStyle]：可选的自定义文本样式（默认字号 14）
  static List<PopupMenuEntry<String>> build(
      bool isFolder, {
        bool enableGenerate = false,
        double itemHeight = 36,
        EdgeInsets itemPadding = const EdgeInsets.symmetric(horizontal: 16),
        TextStyle? textStyle,
      }) {
    final items = <PopupMenuEntry<String>>[];
    final text = textStyle ?? const TextStyle(fontSize: 14);

    // 如果是文件夹：额外提供 "New File" 与 "New Folder"
    if (isFolder) {
      items.addAll([
        PopupMenuItem<String>(
          value: 'new_file',
          height: itemHeight,
          padding: itemPadding,
          child: Text('New File', style: text),
        ),
        PopupMenuItem<String>(
          value: 'new_folder',
          height: itemHeight,
          padding: itemPadding,
          child: Text('New Folder', style: text),
        ),
      ]);
    }

    // project.cloud 专属：Generate
    if (!isFolder && enableGenerate) {
      items.add(
        PopupMenuItem<String>(
          value: 'generate',
          height: itemHeight,
          padding: itemPadding,
          child: Text('Generate', style: text),
        ),
      );
    }

    // 通用项：Rename / Delete
    items.addAll([
      PopupMenuItem<String>(
        value: 'rename',
        height: itemHeight,
        padding: itemPadding,
        child: Text('Rename', style: text),
      ),
      PopupMenuItem<String>(
        value: 'delete',
        height: itemHeight,
        padding: itemPadding,
        child: Text('Delete', style: text),
      ),
    ]);

    return items;
  }
}
